<%
var p = {

	// 标签参数
	id: id!,					// 元素ID
	
	path: path!,				// 绑定form上model中属性的值
	name: name!,				// 隐藏域名称
	value: value!,				// 隐藏域值
	
	labelPath: labelPath!,		// 绑定form上model中属性的值
	labelName: labelName!,		// 标签框名称
	labelValue: labelValue!,	// 标签框值
	
	class: class!'',			// 标签框的CSS类名
	placeholder: placeholder!'请选择',	// 标签框的预期值的提示信息
	//dataMsgRequired: thisTag.attrs['data-msg-required'],	// 必填错误提示信息
	
	//btnClass: btnClass!,		// 标签框后面的按钮CSS类名
	
	title: title!'选项选择',		// 对话框标题
	boxWidth: boxWidth!300, 	// 对话框宽度，默认300像素
	boxHeight: boxHeight!400,	// 对话框高度，默认400像素
	
	url: url!,					// 树结构，数据源地址 [{id, pid, name}]
	
	allowInput: @ObjectUtils.toBoolean(allowInput!false),	// 是否允许label框输入
	allowClear: @ObjectUtils.toBoolean(allowClear!true),	// 是否允许清空选择内容
	
	checkbox: @ObjectUtils.toBoolean(checkbox!false),		// 是否显示复选框，是否支持多选，如果设置canSelectParent=true则返回父节点数据
	expandLevel: @ObjectUtils.toInteger(expandLevel!(-1)),		// 默认展开层次级别（默认:如果有1个根节点，则展开一级节点，否则不展开）
	
	canSelectRoot: @ObjectUtils.toBoolean(canSelectRoot!false),		// 可以选择跟节点
	canSelectParent: @ObjectUtils.toBoolean(canSelectParent!false),	// 可以选择父级节点
	
	isReturnValue: isReturnValue!'false',		// 是否返回树结构的value值，而不是返回id（默认id）
	
	returnFullName: @ObjectUtils.toBoolean(returnFullName!false),	// 是否返回全路径，包含所有上级信息，以 returnFullNameSplit 参数分隔
	returnFullNameSplit: returnFullNameSplit!'/'					// 是否返回全路径，的分隔符，默认“/”
	
};

var id = p.id!p.name!p.path;
var name = p.name!p.path;
var value = p.value!;
var labelName = p.labelName!p.labelPath;
var labelValue = p.labelValue!;
if(isEmpty(value!)&&isNotEmpty(p.path!)){
	value = form.path(p.path);
}
if(isEmpty(labelValue!)&&isNotEmpty(p.labelPath!)){
	labelValue = form.path(p.labelPath);
}
if(isEmpty(value!)){
	value = p.defaultValue;
}
%>
<div class="input-group" id="${id}Div" data-url="${url}" >
<input id="${id}Name" type="text" <%if(isNotEmpty(labelName!)){%> name="${labelName!}"<%}%><%if(isNotEmpty(labelValue!)){%> value="${labelValue!}"<%}%> <%if(isNotEmpty(readonly!)&&@ObjectUtils.toBoolean(readonly)){%> readonly="readonly"<%}%><%if(isNotEmpty(disabled!)&&@ObjectUtils.toBoolean(disabled)){%> disabled="disabled"<%}%><%if(isNotEmpty(p.placeholder!)){%> placeholder="${p.placeholder!}"<%}%><%if(isNotEmpty(class!)){%> class="${class!}"<%}%><%if(isNotEmpty(style!)){%> style="${style!}"<%}%>/>
<input id="${id}Code" type="hidden" name="${name}" <%if(isNotEmpty(value)){%> value="${value}"<%}%>/>
<div class="input-group-append">
   <button type="button" id="${id}Button" class="btn btn-outline-light"><i class="la la-search"></i></button>
</div>
</div>
<script>
$("#${id}Button,#${id}Name").click(function(){
	if ($("#${id}Button").hasClass("disabled")){
		return true;
	}
	var options = {
		type: 2,
		maxmin: true,
		shadeClose: true,
		title: '${p.title}',
		area: ['${p.boxWidth}px', '${p.boxHeight}px'],
		content: '${ctxPath}/tags/treeselect',
		contentFormData: {
			url: $('#${id}Div').attr('data-url'),
			checkbox: '${p.checkbox}',
			expandLevel: '${p.expandLevel}',
			selectIds: $("#${id}Code").val(),
			isReturnValue: '${p.isReturnValue}'
		},
		success: function(layero, index){
			if ($(js.layer.window).width() < 300
				|| $(js.layer.window).height() < 400){
				js.layer.full(index);
			}
		},
		btn: ['<i class="la la-check"></i> 确定'],
		btn1: function(index, layero){
			var win = null;
			var b = $(layero).find("iframe");
	        if (b.length > 0) {
	        	win = b[0].contentWindow;
	        }
			win.$('#keyword').val('').change();
			var codes = [], names = [], nodes;
			if ("${p.checkbox}" == "true"){
				nodes = win.tree.getCheckedNodes(true);
			}else{
				nodes = win.tree.getSelectedNodes();
			}
			for(var i=0; i<nodes.length; i++) {
				var code = nodes[i]['${p.isReturnValue!}'=='true'?'value':'id'], name = nodes[i]['${p.isReturnValue!}'=='true'?'value':'name'];
				codes.push(String(code).replace(/^u_/g,''));
				names.push(String(name).replace(/\([0-9]*\)/g,''));
				break;
			}
			if(typeof treeselectCheck == 'function'){
				if (!treeselectCheck('${id}', nodes)){
					return false;
				}
			}
			$("#${id}Code").val(codes.join(',')).change();
			$("#${id}Name").val(names.join(',')).change();
			try { $('#${id}Code,#${id}Name').valid(); }catch(e){}
			if(typeof treeselectCallback == 'function'){
				treeselectCallback('${id}', 'ok', index, layero, nodes);
			}
		}
	};
	<%if(p.allowClear){%>
	options.btn.push('<i class="la la-eraser"></i> 清除');
	options['btn'+options.btn.length] = function(index, layero){
		$("#${id}Code").val('').change();
		$("#${id}Name").val('').change();
		if(typeof treeselectCallback == 'function'){
			treeselectCallback('${id}', 'clear', index, layero);
		}
	};
	<%}%>
	options.btn.push('<i class="la la-close"></i> 关闭');
	options['btn'+options.btn.length] = function(index, layero){
		if(typeof treeselectCallback == 'function'){
			treeselectCallback('${id}', 'cancel', index, layero);
		}
	};
	js.layer.open(options);
});
</script>